#if !defined (_APP_BUFFER_H)
#define _APP_BUFFER_H

#include <pthread.h>


//定义缓存的结构体
typedef struct
{
    char *data;//缓存数据指针
    int len;//已存数据长度
    int total_size;//总大小
    int offset;//起始偏移量
    pthread_mutex_t lock;//互斥锁
} Buffer;

/**
 * @brief 初始化缓存
 * @param size 缓存大小
 * @return Buffer* 缓存指针
 */
Buffer *app_buffer_init(int size);


/**
 * @brief 释放缓存
 * @param buffer 缓存指针
 * @return void
 */
void app_buffer_free(Buffer *buffer);

/**
 * @brief 向缓存中写入数据
 * @param buffer 缓存指针
 * @param data 数据指针
 * @param len 数据长度
 * @return int 0:成功，-1:失败（剩余空间不够了）
 */
int app_buffer_write(Buffer *buffer, void *data, int len);

/**
 * @brief 从缓存中读取数据
 * @param buffer 缓存指针
 * @param data 数据指针
 * @param len 要读取数据长度
 * @return int 0:成功，-1:失败（剩余数据不够了）
 */
int app_buffer_read(Buffer *buffer, void *data, int len);



#endif /* _APP_BUFFER_H */